<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 总结:普通函数和构造函数的区别
        // 普通函数:主要做业务逻辑处理
        // 构造函数:构造实例化对象,首字母大写
        function GirlFriend(name, age) {
            // 实例成员
            this.name = name;
            this.age = age;
            this.cooking = function() {
                console.log('会做饭');
            }
        };
        // 实例对象
        var girl1 = new GirlFriend('罗莎1', 20);
        var girl2 = new GirlFriend('罗莎2', 22);
        var girl3 = new GirlFriend('罗莎3', 22);
        var girl4 = new GirlFriend('罗莎4', 22);
        console.log(girl1);
        // 原型对象必须会流利背会
        // 原型定义:每一个构造函数都有一个prototype属性,prototype是一个对象属性，其属性值为对象，称为原型对象
        // 目的:构造函数通过原型分配的函数是所有对象所共享的。
        GirlFriend.prototype.singing = function() {
            console.log('会唱歌');
        };
        // console.log(girl1);
        // console.log(girl2);
        // console.log(girl3);
        // console.log(girl4);
        girl1.singing();
        girl2.singing();
        girl3.singing();
        girl4.singing();

        console.dir(Array);
        var arr1 = new Array();
        console.log(arr1);
    </script>
</body>

</html>